首先要建立一個資料庫並確保能連線
登錄phpmyadmin
新增 database , type = utf8mb4_general_ci
Table Name : visitors
|
Id int(11) auto_increment Ip_address text user_agent text visited_at text datetime datetime current_timestamp() ON UPDATE CURRENT_TIMESTAMP |
開始使用 Middleware:
Artisan command:
php artisan make:middleware TrackVisitors
Laravel 預設和新創建的 middleware 都存放在 app/Http/Middleware 裡.
/var/www/code/app/Http/Middleware/TrackVisitors.php
use App\Models\Visitor;
|
public function handle(Request $request, Closure $next): Response { $clientIP = $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER["HTTP_CF_CONNECTING_IP"] # when behind cloudflare ?? $_SERVER['HTTP_X_FORWARDED'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['HTTP_FORWARDED'] ?? $_SERVER['HTTP_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0'; Visitor::addVisitor($clientIP,$_SERVER['HTTP_USER_AGENT'],'');
return $next($request); } } |
/var/www/dontff/app/Models/ Visitor.php
|
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB;
class Visitor extends Model {
protected $table = 'visitors'; // 資料表名稱 protected $primaryKey = 'id'; // 主鍵 protected $fillable = ['ip_address','user_agent','visited_at'];
public static function addVisitor($ip_address,$user_agent,$visited_at) { DB::table('visitors')->insert([ 'ip_address' => $ip_address, 'user_agent' => $user_agent, 'visited_at' => $visited_at ]); }
public static function getTotalVisitor() { $data = DB::table('visitors')->get()->count();
return $data; } } |
|
<?php use App\Models\Visitor; //echo Visitor::getTotalVisitor(); ?> <?php echo Visitor::getTotalVisitor(); ?> |
/var/www/dontff/bootstrap/app.php
use App\Http\Middleware\TrackVisitors;
|
->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { // $middleware->append(TrackVisitors::class); }) ->withExceptions(function (Exceptions $exceptions): void { // })->create(); |
Connect Database
.env
|
B_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=code |
Error:
Base table or view not found: 1146 Table 'code.sessions' doesn't exist
|
打开项目根目录下的 .env 文件。 找到 SESSION_DRIVER(较新版本中可能为 SESSION_STORE),将其修改为: env SESSION_DRIVER=file
CACHE_STORE=file php artisan config:clear php artisan cache:clear |
Middleware Parameters
TrackVisitors
Visitor::addVisitor($clientIP,$_SERVER['HTTP_USER_AGENT'],$request->route('fileName'));
/var/www/code/bootstrap/app.php
|
->withMiddleware(function (Middleware $middleware): void { // //$middleware->append(TrackVisitors::class); $middleware->alias([ 'TrackVisitors' => \App\Http\Middleware\TrackVisitors::class, ]); }) |
Route
|
Route::get('/genrateWordPage/{fileName}', function($fileName) { return View::make('pages.genrateWordPage')->with('fileName', $fileName); })->middleware('TrackVisitors'); |